/*!
\file VisualizationSettings.h
\brief Contains definition of VisualizationSettings.
\ingroup Action
*/

#ifndef VISUALIZATIONSETTINGS_H
#define VISUALIZATIONSETTINGS_H

#include<QList>
#include<QString>

enum{
	CVIS_COLOUR_NODE = 0x1,
	CVIS_COLOUR_EDGE = 0x2,
	CVIS_TABLE_VALUE = 0x4
};
//!< Enum to be used as flags for simple usage of those settings.

/*!
\class VisualizationSettings
\brief Contains three basic settings that determine what will be shown.
By default, all settings are true. This means, nodes in containers are shown. Edges in containers are shown. And, a table with this Container and its data is shown.
\ingroup Action
*/

class VisualizationSettings{
public:
	VisualizationSettings();
	//!< Constructor
	~VisualizationSettings();
	//!< Destructor
	
	unsigned int containerSettings( int i );
	//!< Returns flag of settings for Container i.
	void setContainerSettings( int i, unsigned int settings = (CVIS_COLOUR_NODE | CVIS_COLOUR_EDGE | CVIS_TABLE_VALUE) );
	//!< Sets flag of settings for container i.
	
	QString highlightColour();
	//!< Returns the colour used for highlighting.
	QString containerColour( int i );
	//!< Returns the colour for elements in Container i.
private:
	QList<unsigned int> m_containerSettings;
	QList<QString> m_containerColours;
	QString m_highlightColour;
	QList<QString> m_availableColours;

	QString _getNewAvailableColour();
	void _populateColourList();
};

#endif

